import { error } from '../../output.js'

const input = (code) => {
  let pos = 0
  let line = 1
  let col = 0

  const next = () => {
    const ch = code.charAt(pos++)
    if (ch === '\n') {
      line++
      col = 0
    } else {
      col++
    }
    return ch
  }

  const peek = () => {
    return code.charAt(pos)
  }

  const eof = () => {
    return peek() === ''
  }

  const croak = (msg) => {
    error(`${ msg } (${ line }:${ col })`)
  }

  return {
    next,
    peek,
    eof,
    croak
  }
}

export default input
